/**
 * @file Receta.java
 * @brief Implementación de la clase Receta
 *
 * Copyright (C)  - April [2011]
 *
 * @author Ana Ferreira Blanco
 * @version 01.00
 *
 */

package GestorCitas;

import java.io.IOException;
import java.sql.SQLException;


/**
 * @class Receta
 * @brief Recetas que extienden los médicos de la clínica a los pacientes durante las citas
 */
public class Receta {
    /* Declaración de las variables de instancia */
    private Integer _idReceta;                      // Identificador único de la receta
    private String _instrucciones;                  // Instrucciones sobre cómo tomar el medicamento indicado en la receta
    private String _juicioDiagnostico;              // Diagnóstico del médico
    private Integer _idCita;                        // Identificador de la cita en la que se extiende la receta


    /* Constructor */
    public Receta() { }
    public Receta(Integer idReceta, String instrucciones, String juicioDiagnostico,
                        Integer idCita) {
        this._idReceta = idReceta;
        this._instrucciones = instrucciones;
        this._juicioDiagnostico = juicioDiagnostico;
        this._idCita = idCita;
    }

    /* Métodos de clase */
    /*
    @brief Agrega una receta.
    */
    public static void add ( Receta r ) throws SQLException, IOException, ClassNotFoundException {
        RecetaDAO.add(r);
    }

    /*
    @brief Elimina lógicamente una receta.
    */
    public static void delete ( Receta r ) throws SQLException, IOException, ClassNotFoundException {
        RecetaDAO.delete(r);
    }

    /*
    @brief Actualiza una receta.
    */
    public static void update ( Receta r ) throws SQLException, IOException, ClassNotFoundException {
        RecetaDAO.update(r);
    }

    /*
    @brief Obtiene la receta que se corresponde con el id pasado como argumento.
    */
    public static Receta get ( int idReceta ) throws SQLException, IOException, ClassNotFoundException {
        Receta receta_buscada = RecetaDAO.get(idReceta);
        return receta_buscada;
    }

    /*
    @brief Obtiene una lista de recetas en función de los parámetros pasados como argumento. Los
    parámetros nulos no se tendrán en cuenta para la búsqueda.
    */
    public static Receta[] get ( String instrucciones, String juicioDiagnostico,
                        int idCita) throws SQLException, IOException, ClassNotFoundException {
        Receta[] l_recetas = RecetaDAO.get(instrucciones, juicioDiagnostico, idCita);
        return l_recetas;
    }
   

    /* Métodos de instancia */
    /**
     * @brief Consultas sobre el objeto "Receta"
     * @return Valor del objeto buscado
     */


    /*
    @brief Obtiene el identificador de la receta.
    */
    public int getIdReceta() {
        return this._idReceta;
    }

    /*
    @brief Obtiene las instrucciones de la receta.
    */
    public String getInstruccionesReceta() {
        return this._instrucciones;
    }

    /*
    @brief Obtiene el juicio diagnostico de la receta.
    */
    public String getJuicioDiagnosticoReceta() {
        return this._juicioDiagnostico;
    }

    /*
    @brief Obtiene el identificador de la cita en la que se extiende la receta.
    */
    public int getIdCita() {
        return this._idCita;
    }

    /*
    @brief Obtiene una lista con las líneas de receta asociadas.
    */
    public LineaReceta[] getLineasReceta() throws SQLException, IOException, ClassNotFoundException {
        return LineaReceta.get(this._idReceta, null, null, null, null, null, null, null);
    }


   /**
     * @brief Modificaciones realizadas en el objeto "Receta"
     * @param nuevo valor para el objeto
     */

    /*
    @brief Asigna el identificador de la receta.
    */
    public void setIdReceta(int id) {
        this._idReceta = id;
    }

    /*
    @brief Asigna las instrucciones de la receta.
    */
    public void setInstruccionesReceta(String instrucciones) {
        this._instrucciones = instrucciones;
    }

    /*
    @brief Asigna el juicio diagnostico de la receta.
    */
    public void setJuicioDiagnosticoReceta(String diagnostico) {
        this._juicioDiagnostico = diagnostico;
    }
    
}
